<?php
class CuentaCorrienteCobrar extends AppModel{
	var $name='CuentaCorrienteCobrar';
	var $actAs = array('transaction');

	var $belongsTo = array(
            'DocumentoVenta' => array(
                'className' => 'DocumentoVenta',
		'foreignKey' => 'documento_venta_id'
            ),
            'Operaciones' => array(
                'className' => 'TipoOperacionCc',
                'foreignKey' => 'tipo_operacion_cc_id'
            ),
            'DocumentoVentaRelacionado'=>array(
                'className' => 'DocumentoVenta',
                'foreignKey' => 'documento_relacionado_id'
            )
	);
		
        function saveCc($empresa, $centroDist, $ejercicio, $periodo, $fecha, $codigo,
                $documentoId, $importe, $percepcion, $credito = false,
                $codigoDocumentoRelacionado = null, $documentoRelacionado = null, 
				$numeroDocumentoRelacionado = null, $tipoCambioRelacionado = null, $diferenciaCambio = 0){

            if ($codigo != 101 && $codigo != 103 && $codigo != 107 && $codigo != 108&& $codigo != 111 && $codigo != 125 && $codigo != 201)
                return false;
            if (!$this->deleteCc($documentoId, $codigo, $tipoOperacion=null, $documentoRelacionado, $codigoDocumentoRelacionado))
                return false;
            if ($codigo != 125){
                $this->DocumentoVenta->recursive = -1;
                $documento = $this->DocumentoVenta->read(null, $documentoId);
               // if (empty($documento['DocumentoVenta']['cliente_cc_id'])||$documento['DocumentoVenta']['cliente_cc_id']==0)
                //   $cliente = $documento['DocumentoVenta']['cliente_id'];
               // else
                $cliente = $documento['DocumentoVenta']['familia_id'];
                # CAMPOS BY JHAZ
                $numeroDoc 	= $documento['DocumentoVenta']['numero_documento'];
                $moneda	 	= $documento['DocumentoVenta']['moneda_id'];
                $tipoCambio = $documento['DocumentoVenta']['tipo_cambio'];					
                $importe_mn = round($documento['DocumentoVenta']['cargo']*$tipoCambio,2); 
                $importe_me = ($moneda<>1)?$documento['DocumentoVenta']['cargo']:0; 
                $vendedor 	= $documento['DocumentoVenta']['vendedor_id'];
            } else {
                $this->ConvenioRelacionado->recursive = -1;
                $documento = $this->ConvenioRelacionado->read(null, $documentoId);
                $cliente = $documento['ConvenioRelacionado']['cliente_convenio_id'];
                # CAMPOS BY JHAZ
                $numeroDoc	= $documento['ConvenioRelacionado']['numero_documento'];
                $moneda	 	= $documento['ConvenioRelacionado']['moneda_id'];
                $tipoCambio = $documento['ConvenioRelacionado']['tipo_cambio'];				
                $importe_mn = round($documento['ConvenioRelacionado']['suma_importe_total']*$tipoCambio,2); 
                $importe_me = ($moneda<>1)?$documento['ConvenioRelacionado']['suma_importe_total']:0; 
                $vendedor 	= $documento['ConvenioRelacionado']['vendedor_id'];
            }

            $data['CuentaCorrienteCobrar']['empresa_id']                        = $empresa;
            $data['CuentaCorrienteCobrar']['centro_dist_id']                    = $centroDist;
            $data['CuentaCorrienteCobrar']['ejercicio_id']                      = $ejercicio;
            $data['CuentaCorrienteCobrar']['periodo_id']                        = $periodo;
            $data['CuentaCorrienteCobrar']['fecha']                             = $fecha;
            $data['CuentaCorrienteCobrar']['importe']                           = $importe;
            $data['CuentaCorrienteCobrar']['percepcion']                        = $percepcion;
            $data['CuentaCorrienteCobrar']['codigo_documento_id']               = $codigo;
            $data['CuentaCorrienteCobrar']['documento_venta_id']                = $documentoId;
            $data['CuentaCorrienteCobrar']['cliente_id']                        = $cliente;
            $data['CuentaCorrienteCobrar']['codigo_documento_relacionado_id']   = $codigoDocumentoRelacionado;
            $data['CuentaCorrienteCobrar']['documento_relacionado_id']          = $documentoRelacionado;
            # campos aderidos despues by jhaz			
            $data['CuentaCorrienteCobrar']['moneda_id']  			= $moneda;
            $data['CuentaCorrienteCobrar']['tipo_cambio']   			= $tipoCambio;
            $data['CuentaCorrienteCobrar']['importe_mn']  			= $importe_mn;
            $data['CuentaCorrienteCobrar']['importe_me']        		= $importe_me;
            $data['CuentaCorrienteCobrar']['numero_documento'] 			= $numeroDoc;
            $data['CuentaCorrienteCobrar']['numero_documento_relacionado']      = $numeroDocumentoRelacionado;
            $data['CuentaCorrienteCobrar']['vendedor_id'] 			= $vendedor;
            $data['CuentaCorrienteCobrar']['diferencia_cambio'] 		= abs($diferenciaCambio);			

            if ($credito || $codigoDocumentoRelacionado == 107 || $codigoDocumentoRelacionado == 111){
                $cantidad = 1;
			}else{
                $cantidad = 2;
			}
            $res = true;
            $this->recursive = -1;
            for($i = 1; $i <= $cantidad; $i++){
                $this->create();
                if($codigoDocumentoRelacionado == 107 || $codigoDocumentoRelacionado == 111 || $codigoDocumentoRelacionado == 201){
                   # CONSTRRUIMOS
					$tipoCambioRelacionado = empty($tipoCambioRelacionado)?$tipoCambio:$tipoCambioRelacionado;
					$importe_mn = $tipoCambioRelacionado*$importe;
					$importe_me = ($moneda<>1)?$importe:0;
					$data['CuentaCorrienteCobrar']['tipo_cambio']   = $tipoCambioRelacionado;
					$data['CuentaCorrienteCobrar']['importe_mn']  	= $importe_mn;
					$data['CuentaCorrienteCobrar']['importe_me']    = $importe_me;					
					$data['CuentaCorrienteCobrar']['tipo_operacion_cc_id']= 2;
				}else{
                    $data['CuentaCorrienteCobrar']['tipo_operacion_cc_id']= $i;
				}
                if (!$this->save($data)){
                    $res = false;
                    break;
                }
            }
            return $res;
        }
		
        function deleteCc($documentoId, $codigo = null, $tipoOperacion=null,
                $documentoRelacionado = null,
                $codigoDocumentoRelacionado = null){
            $condicion = array(
                'CuentaCorrienteCobrar.documento_venta_id'=>$documentoId,
                'CuentaCorrienteCobrar.codigo_documento_id'=>$codigo,
            );
                
            if (!empty($codigoDocumentoRelacionado)) {//discrimina por el tipo de operacion ya sea Cargo o Abono
                $condicion = array_merge($condicion, array('CuentaCorrienteCobrar.codigo_documento_relacionado_id'=>$codigoDocumentoRelacionado));
            }
            if (!empty($documentoRelacionado)) {//discrimina por el tipo de operacion ya sea Cargo o Abono
                $condicion = array_merge($condicion, array('CuentaCorrienteCobrar.documento_relacionado_id'=>$documentoRelacionado));
            }
            if (!empty($tipoOperacion)) {//discrimina por el tipo de operacion ya sea Cargo o Abono
                $condicion = array_merge($condicion, array('CuentaCorrienteCobrar.tipo_operacion_cc_id'=>$tipoOperacion));
            }
            if (!empty($codigoDocumentoRelacionado)) {
                $condicion = array_merge($condicion, array('CuentaCorrienteCobrar.codigo_documento_relacionado_id'=>$codigoDocumentoRelacionado));
            }
            if (!empty($documentoRelacionado)) {
                $condicion = array_merge($condicion, array('CuentaCorrienteCobrar.documento_relacionado_id'=>$documentoRelacionado));
            }
            if (!empty($codigo)){
                $condicion = array_merge($condicion, array('CuentaCorrienteCobrar.codigo_documento_id'=>$codigo));
            }
            $this->recursive = -1;
            return $this->deleteAll($condicion);
        }
        // SOLO PARA EL MODULO DE CONVENIOS :D
        function abonoCc($empresa, $centroDist, $ejercicio, $periodo, $fecha, $codigo, $documentoId, $importe, $percepcion,
                $codigoDocumentoRelacionado = null, $documentoRelacionado = null, $numeroDocumentoRelacionado = null){
            if ($codigo != 101 && $codigo != 103 && $codigo != 107 && $codigo != 108&& $codigo != 111&& $codigo != 125){
                return false;
            }
            if (!$this->deleteCc($documentoId, $codigo,2,$documentoRelacionado,$codigoDocumentoRelacionado)){
                return false;
            }
            $this->DocumentoVenta->recursive = -1;
            $this->create();
            $documento = $this->DocumentoVenta->read(null, $documentoId);
            /*if (empty($documento['DocumentoVenta']['cliente_cc_id'])||$documento['DocumentoVenta']['cliente_cc_id']==0){
                $cliente = $documento['DocumentoVenta']['cliente_id'];
            } else {
                $cliente = $documento['DocumentoVenta']['cliente_cc_id'];
            }*/
			$cliente = $documento['DocumentoVenta']['cliente_cc_id'];
            $data['CuentaCorrienteCobrar']['empresa_id']                        = $empresa;
            $data['CuentaCorrienteCobrar']['centro_dist_id']                    = $centroDist;
            $data['CuentaCorrienteCobrar']['ejercicio_id']                      = $ejercicio;
            $data['CuentaCorrienteCobrar']['periodo_id']                        = $periodo;
            $data['CuentaCorrienteCobrar']['fecha']                             = $fecha;
            $data['CuentaCorrienteCobrar']['importe']                           = $importe;
            $data['CuentaCorrienteCobrar']['percepcion']                        = $percepcion;
            $data['CuentaCorrienteCobrar']['codigo_documento_id']               = $codigo;
            $data['CuentaCorrienteCobrar']['documento_venta_id']                = $documentoId;
            $data['CuentaCorrienteCobrar']['cliente_id']                        = $cliente;
            $data['CuentaCorrienteCobrar']['codigo_documento_relacionado_id']   = $codigoDocumentoRelacionado;
            $data['CuentaCorrienteCobrar']['documento_relacionado_id']          = $documentoRelacionado;
            $data['CuentaCorrienteCobrar']['tipo_operacion_cc_id']              = 2; // abono
			# campos aderidos despues by jhaz
			$moneda 	= $documento['DocumentoVenta']['moneda_id'];
			$tipoCambio = $documento['DocumentoVenta']['tipo_cambio'];
			if(!empty($documentoRelacionado)){
				$importe_mn = round($importe*$tipoCambio,2);
				$importe_me = ($moneda<>1)?$importe:0;
			}
			$data['CuentaCorrienteCobrar']['moneda_id']  					= $moneda;
			$data['CuentaCorrienteCobrar']['tipo_cambio']   				= $tipoCambio;
			$data['CuentaCorrienteCobrar']['importe_mn']  					= $importe_mn;
			$data['CuentaCorrienteCobrar']['importe_me']        			= $importe_me;
			$data['CuentaCorrienteCobrar']['numero_documento'] 				= $documento['DocumentoVenta']['numero_documento'];
			$data['CuentaCorrienteCobrar']['numero_documento_relacionado']  = $numeroDocumentoRelacionado;
			$data['CuentaCorrienteCobrar']['vendedor_id'] 					= $documento['DocumentoVenta']['vendedor_id'];
			
            if (!$this->save($data)){
               return false;
            }
            return true;
        }

        function cargoCc($empresa, $centroDist, $ejercicio, $periodo, $fecha, $codigo, $documentoId,
                $importe, $percepcion, $cliente = null, $vendedor, $numeroDocumento, $moneda = 1, $tipoCambio= 1){
            if ($codigo != 101 && $codigo != 103 && $codigo != 107 && $codigo != 108&& $codigo != 111&& $codigo != 125){
            	return false;
            }
            if (!$this->deleteCcCliente($documentoId, $codigo,1)){
            	return false;
            }
            if (empty($cliente)){
                $this->DocumentoVenta->recursive = -1;
                $documento = $this->DocumentoVenta->read(null, $documentoId);
                if (empty($documento['DocumentoVenta']['cliente_cc_id'])||$documento['DocumentoVenta']['cliente_cc_id']==0){
                    $cliente = $documento['DocumentoVenta']['cliente_id'];
                }else{
                    $cliente = $documento['DocumentoVenta']['cliente_cc_id'];
                }
            }
            $this->create();
            $data['CuentaCorrienteCobrar']['empresa_id']                    = $empresa;
            $data['CuentaCorrienteCobrar']['centro_dist_id']                = $centroDist;
            $data['CuentaCorrienteCobrar']['ejercicio_id']                  = $ejercicio;
            $data['CuentaCorrienteCobrar']['periodo_id']                    = $periodo;
            $data['CuentaCorrienteCobrar']['fecha']                         = $fecha;
            $data['CuentaCorrienteCobrar']['importe']                       = $importe;
            $data['CuentaCorrienteCobrar']['percepcion']                    = $percepcion;
            $data['CuentaCorrienteCobrar']['codigo_documento_id']           = $codigo;
            $data['CuentaCorrienteCobrar']['documento_venta_id']            = $documentoId;
            $data['CuentaCorrienteCobrar']['cliente_id']                    = $cliente;
            $data['CuentaCorrienteCobrar']['tipo_operacion_cc_id']			= 1; // cargo
			# campos aderidos despues by jhaz
			$importe_mn = round($importe*$tipoCambio,2);
			$importe_me = ($moneda<>1)?$importe:0;
			
			$data['CuentaCorrienteCobrar']['moneda_id']  					= $moneda;
			$data['CuentaCorrienteCobrar']['tipo_cambio']   				= $tipoCambio;
			$data['CuentaCorrienteCobrar']['importe_mn']  					= $importe_mn;
			$data['CuentaCorrienteCobrar']['importe_me']        			= $importe_me;
			$data['CuentaCorrienteCobrar']['numero_documento'] 				= $numeroDocumento;
			$data['CuentaCorrienteCobrar']['numero_documento_relacionado']  = '';
			$data['CuentaCorrienteCobrar']['vendedor_id'] 					= $vendedor;
			
            if (!$this->save($data)){
               return false;
            }	
            return true;
        }
		
        function deleteCcCliente($documentoId,$codigo = null,$tipoOperacion=null,$cliente = null,
                $codigoDocumentoRelacionado = null, $documentoRelacionado = null){
            $condicion = array(
                'CuentaCorrienteCobrar.documento_venta_id'=>$documentoId,
                'CuentaCorrienteCobrar.codigo_documento_id'=>$codigo,
            );

            if (!empty($codigoDocumentoRelacionado)) {//discrimina por el tipo de operacion ya sea Cargo o Abono
                $condicion = array_merge($condicion, array('CuentaCorrienteCobrar.codigo_documento_relacionado_id'=>$codigoDocumentoRelacionado));
            }
            if (!empty($documentoRelacionado)) {//discrimina por el tipo de operacion ya sea Cargo o Abono
                $condicion = array_merge($condicion, array('CuentaCorrienteCobrar.documento_relacionado_id'=>$documentoRelacionado));
            }
            if (!empty($tipoOperacion)) {//discrimina por el tipo de operacion ya sea Cargo o Abono
                $condicion['CuentaCorrienteCobrar.tipo_operacion_cc_id']=$tipoOperacion;
            }
            if (!empty($cliente)) {
                $condicion['CuentaCorrienteCobrar.cliente_id']=$cliente;
            }
            $this->recursive = -1;
            $objs = $this->find('all',array('conditions'=>array('AND'=>$condicion)));
            if(count($objs)){
                foreach($objs as $ob){
                    if(!$this->delete($ob['CuentaCorrienteCobrar']['id'])){
                        return false;
                    }
                }
            }
            return true;
        }
}
?>